/**
 * \file CBLsFrm.h
 * \author Corentin Le Bail
 * \date 2009-2011
 * \brief Fichier de déclaration de la classe CBLsFrm; fenêtre des bons de livraison.
 */
//------------------------------------------------------------------------------
#ifndef __CBLSFRM_H__
#define __CBLSFRM_H__
//------------------------------------------------------------------------------
#include "CMyMainWindow.h"
#include "ui_CBLsFrm.h"
#include "CGrilleWidget.h"
//------------------------------------------------------------------------------
/**
 * \class CBLsFrm CBLsFrm.h "CBLsFrm.h"
 * \brief Classe de la fenêtre des bons de livraison
 */
class CBLsFrm : public CMyMainWindow, private Ui::BLsFrm
{
	Q_OBJECT
	public:
		/**
	 	 * \fn CBLsFrm(QString name, QString lastCode, QWidget *parent = 0)
	 	 * \brief Constructeur
		 * \param[in] name Nom de l'objet
		 * \param[in] lastCode Code du BL à afficher lors de l'ouverture de la fenêtre
		 * \param[in] parent Référence vers un objet parent
		 */
		CBLsFrm(QString name, QString lastCode, QWidget *parent = 0);
		/**
		 * \fn void setNumero(int numero)
		 * \brief Charge un BL
		 * \param[in] numero Numéro du BL à charger
		 */
		void setNumero(int numero);
	private:
		enum {cnbLigne, cnbArticle, cnbDescArticle, cnbQuantite, cnbUnite, cnbPrix, cnbTotal, cnbTva} EColBLames;
		
		CGlobal::EAction actionCur;
		CGrilleWidget *lignesWidget;
		bool avertModifClientShown;
	
		void setActionCur(CGlobal::EAction action);
		CGlobal::EAction getActionCur(void); 
		void closeEvent(QCloseEvent * event);
		void createGrille(void);
		void loadInfoClient(QString client);
		void loadInfoAdresse(int numeroAdresse, bool facturation);
		void loadGrille(void);
		void calculMontant(int ignoreRow=-1);
		void calculTotalLigne(int row);
		bool loadEnteteFromDevis(int numDevis);
		void loadEnteteFromCommande(int numeroCommande);
		void loadLigneFromDevis(int numDevis);
		void loadLigneFromCommande(int numeroCommande);
		void mouvementDeStock(QString article, int ligne, double ancienneValeur, double nouvellValue);
		void swapRows(int n1, int n2);
		void showFormulaire(QSqlQuery *query, CGlobal::EAction& action);
		void showChampsAuto(void);
		void makeRequete(QString& requete, QString& alias);
	private slots:
		void on_actAjouter_triggered(void);
		void on_actValider_triggered(void);
		void on_actAnnuler_triggered(void);
		void on_actSupprimer_triggered(void);
		void onChange(void);
		void onChangeClient(void);
		void onCombo(CMyComboBox *comboBox);
		void onComboClient(CMyComboBox *comboBox);
		void onClientEditingFinished(void);
		void on_actRechercheUneFiche_triggered(void);
		void ajouteLigne(bool &goToLast);
		void supprimeLigne(int row, bool& ok);
		void modifiLigne(int row, int column);
		void monteLigne(int row);
		void descendLigne(int row);
		void ligneDoubleClicked(int row, int column);
		void on_cmdAdresseFacturation_clicked(bool checked);
		void on_cmdAdresseLivraison_clicked(bool checked);
		void onInvokeHelp(CChamp *champ);
		void on_actLock_triggered(void);
};
//------------------------------------------------------------------------------
#endif //__CBLSFRM_H__
//------------------------------------------------------------------------------